package com.zb.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.zb.entity.ZjWorkSla;
import com.zb.entity.ZjWorkSlaModule;
import com.zb.extend.WorkSlaModuleExtend;

import java.util.List;

/**
 * <p>
 * 工单SLA模块表 服务类
 * </p>
 *
 * @author WEN
 * @since 2024-02-04
 */
public interface ZjWorkSlaModuleService extends IService<ZjWorkSlaModule> {

    /**
     * 保存模块
     * @param custAccId 商家ID
     * @param workSlaId 工单SLA表ID
     * @param moduleIds 模块ID集合
     */
    void save(Long custAccId, Long workSlaId, List<Long> moduleIds);

    /**
     * 保存模块与Sla关联
     * @param custAccId 商家ID
     * @param moduleId 工单模块ID
     * @param workSlaId 工单SLA规则ID
     */
    void save(Long custAccId, Long moduleId, Long workSlaId);

    /**
     * 根据工单SLA表ID删除模块
     * @param workSlaId 工单SLA表ID
     */
    void deleteByWorkSlaId(Long workSlaId);

    /**
     * 根据工单SLA表ID删除模块
     * @param workSlaIds 工单SLA表ID
     */
    void deleteByWorkSlaIds(List<Long> workSlaIds);

    /**
     * 根据商家ID获取已选择的适用模块
     * @param custAccId 商家ID
     * @param workSlaId 工单SlaID
     * @return
     */
    List<Long> getModuleIdByCustaccId(Long custAccId, Long workSlaId);

    /**
     * 根据工单策略SLA ID获取模块
     * @param workSlaIds 工单策略SLA ID
     * @return
     */
    List<WorkSlaModuleExtend> getByWorkSlaIds(List<Long> workSlaIds);

    /**
     * 根据工单策略SLA ID获取模块
     * @param workSlaId 工单策略SLA ID
     * @return
     */
    List<Long> getModuleIdByWorkSlaId(Long workSlaId);

    /**
     * 根据模块ID获取SLA规则名称
     * @param moduleId 模块ID
     * @return
     */
    ZjWorkSla getSalNameByModuleId(Long moduleId);

    /**
     * 根据模块ID获取SLA的关联模块
     * @param moduleIds 模块ID
     * @return
     */
    List<ZjWorkSlaModule> getByModuleIds(List<Long> moduleIds);


}
